( ********************************************************************** File: FRSVC1.F Author: Dencom Inc. - www.dencom-inc.com Date: March 16, 1998 Description: This file contains variable and constant declarations, various user defined words and words used to get user input. The source code used to create the Test Setup Menu is also located in the bottom portion of this file. This source code is not supported by the user programming environment, and therefore there is no documentation other than the example in this file. If an error is made in this code, it will be very difficult to detect - it is recommended that the user does not modify this code or does not create additional menus. ********************************************************************** ) TCLR STATE_ON L2_ON REP_COMP MSG+IE ( ********** Initialize VARIABLES and CONSTANTS ********** ) 10 VARIABLE CR-VALUE 0 VARIABLE CR-FLAG 0 VARIABLE CALLED-NUMBER 32 ALLOT 0 VARIABLE CALLING-NUMBER 32 ALLOT 16 VARIABLE CAUSE-VALUE 100 VARIABLE DLCI-VALUE 0 VARIABLE DLCI-INCLUDED 1 VARIABLE BCAP-INCLUDED 0 VARIABLE LINK-CORE-PRESENT 0 VARIABLE LINK-CORE-INCLUDED 0 VARIABLE FRAME-COUNT 100 VARIABLE FRAME-COUNT-MAX 64 VARIABLE FRAME-LENGTH 1 VARIABLE TIME-BETWEEN-FRAMES 0 VARIABLE IUT-USER-SIDE ( ********** Various User Defined Words ********** ) : EXTRACT_CR_VALUE ( -- ) R-CR-LEN @ S-CR-LEN ! R-CR-VALUE @ S-CR-VALUE ! R-CR-FLAG @ 0X01 XOR S-CR-FLAG ! ; ( ********** Get User Input ********** ) : GET_TIME_BETWEEN_FRAMES 0 prompt C! PROMPT" Enter the time delay between frames (in 1/10 seconds): " prompt 10 STR># IF DUP 1 100 BETWEEN? IF TIME-BETWEEN-FRAMES ! ELSE DROP ENDIF ENDIF END_PROMPT ; : GET_NUM_FRAMES ( -- ) 0 prompt C! PROMPT" Enter the number of frames (0-1000000): " prompt 10 STR># IF DUP 0 1000000 BETWEEN? IF FRAME-COUNT-MAX ! ELSE DROP ENDIF ENDIF END_PROMPT ; : GET_FRAME_LENGTH ( -- ) 0 prompt C! PROMPT" Enter the frame length (0-1100): " prompt 10 STR># IF DUP 0 1100 BETWEEN? IF FRAME-LENGTH ! ELSE DROP ENDIF ENDIF END_PROMPT ; : GET_CR_VALUE ( -- ) 0 prompt C! PROMPT" Enter the Call Reference Value (0-32767): " prompt 10 STR># IF DUP 0 32767 BETWEEN? IF CR-VALUE ! ELSE DROP ENDIF ENDIF END_PROMPT ; : GET_CR_FLAG ( -- ) 0 prompt C! PROMPT" Enter the Call Reference Flag (Orig=0, Dest=1): " prompt 10 STR># IF DUP 0 1 BETWEEN? IF CR-FLAG ! ELSE DROP ENDIF ENDIF END_PROMPT ; : GET_CAUSE_VALUE ( -- ) 0 prompt C! PROMPT" Enter a valid Cause Value between 1 and 127: " prompt 10 STR># IF DUP 1 127 BETWEEN? IF CAUSE-VALUE ! ELSE DROP ENDIF ENDIF END_PROMPT ; : GET_DLCI ( -- ) 0 prompt C! PROMPT" Enter the DLCI (press RETURN to exclude): " prompt DUP C@ IF 10 STR># IF DUP 0 1023 BETWEEN? IF DLCI-VALUE ! 1 DLCI-INCLUDED ! ELSE DROP ENDIF ENDIF ELSE DROP 0 DLCI-INCLUDED ! ENDIF END_PROMPT ; : GET_CALLED_NUMBER ( -- ) 0 prompt C! PROMPT" Enter the called number (press RETURN to exclude): " prompt DUP C@ IF CALLED-NUMBER 16 CMOVE ELSE DROP 0 CALLED-NUMBER ! ENDIF END_PROMPT ; : GET_CALLING_NUMBER ( -- ) 0 prompt C! PROMPT" Enter the calling number (press RETURN to exclude): " prompt DUP C@ IF CALLING-NUMBER 16 CMOVE ELSE DROP 0 CALLING-NUMBER ! ENDIF END_PROMPT ; : SEND_BUFFER ( -- ) 0 prompt C! PROMPT" Enter the buffer number: " prompt 10 STR># IF DUP 0 255 BETWEEN? IF BUFFER_INFO DL_DATA ELSE T." Buffer number is out of specified range (0 to 255)" TCR DROP ENDIF ENDIF END_PROMPT ; : BUILD_DATA_BUFFER ( -- ) 1100 255 ALLOT_BUFFER 1100 255 BUFFER_LENGTH 0X41 255 BUFFER_PATTERN ; BUILD_DATA_BUFFER : SEND_FRAME ( -- ) 2 S-ADDR-LEN ! 0 S-DE ! DLCI-VALUE @ S-DLCI ! FRAME-LENGTH @ 255 BUFFER_LENGTH 255 BUFFER_INFO S:DATA ; SCREEN_MENU TEST_SETUP_MENU 0 2 17 79 TITLE BOX 1 FIRST_LINE PICTURE \H IUT_Parameters \H Transmitting_Frames \I IUT_is: +++ \I Number_of_frames: +++ \I Time_between_frames: +++ \I Length_of_frames: +++ \H Setup_Message \I CR_Value: +++ \I Called_Number: +++ \I BCAP: +++ \I Called_SAD: +++ \I DLCI: +++ \I Calling_Number: +++ \I LLC: +++ \I Calling_SAD: +++ \H Disc_Message \I CR_Value: +++ \I Cause_Value: +++ \I CR_Flag: +++ END_PICTURE \I IUT_is: KEYS GROUP $ Ntwk$ 0 IUT-USER-SIDE ! 0 DLCI-INCLUDED ! $ User$ 1 IUT-USER-SIDE ! 1 DLCI-INCLUDED ! HILITE# IUT-USER-SIDE @ 1 + END_GROUP EXIT_MENU_FKEY END_KEYS STATUS IUT-USER-SIDE @ 1 + PLACE_LABEL END_STATUS \I Number_of_frames: KEYS $ Modify value$ GET_NUM_FRAMES EXIT_MENU_FKEY END_KEYS STATUS FRAME-COUNT-MAX @ W. END_STATUS \I Time_between_frames: KEYS $ Modify value$ GET_TIME_BETWEEN_FRAMES EXIT_MENU_FKEY END_KEYS STATUS TIME-BETWEEN-FRAMES @ W. END_STATUS \I Length_of_frames: KEYS $ Modify value$ GET_FRAME_LENGTH EXIT_MENU_FKEY END_KEYS STATUS FRAME-LENGTH @ W. END_STATUS \I CR_Value: KEYS $ Modify value$ GET_CR_VALUE EXIT_MENU_FKEY END_KEYS STATUS CR-VALUE @ W. END_STATUS \I BCAP: KEYS GROUP $ Exclude$ 0 BCAP-INCLUDED ! $ Include$ 1 BCAP-INCLUDED ! HILITE# BCAP-INCLUDED @ 1 + END_GROUP EXIT_MENU_FKEY END_KEYS STATUS BCAP-INCLUDED @ 1 + PLACE_LABEL END_STATUS \I DLCI: KEYS $ Modify value$ GET_DLCI EXIT_MENU_FKEY END_KEYS STATUS DLCI-INCLUDED @ IF DLCI-VALUE @ W. ELSE W." Exclude" ENDIF END_STATUS \I LLC: KEYS GROUP $ Exclude$ 0 LINK-CORE-INCLUDED ! $ Include$ 1 LINK-CORE-INCLUDED ! HILITE# LINK-CORE-INCLUDED @ 1 + END_GROUP EXIT_MENU_FKEY END_KEYS STATUS LINK-CORE-INCLUDED @ 1 + PLACE_LABEL END_STATUS \I Called_Number: KEYS $ Modify value$ GET_CALLED_NUMBER EXIT_MENU_FKEY END_KEYS STATUS CALLED-NUMBER C@ IF CALLED-NUMBER COUNT W.TYPE ELSE W." Exclude" ENDIF END_STATUS \I Calling_Number: KEYS $ Modify value$ GET_CALLING_NUMBER EXIT_MENU_FKEY END_KEYS STATUS CALLING-NUMBER C@ IF CALLING-NUMBER COUNT W.TYPE ELSE W." Exclude" ENDIF END_STATUS \I CR_Value: KEYS $ Modify value$ GET_CR_VALUE EXIT_MENU_FKEY END_KEYS STATUS CR-VALUE @ W. END_STATUS \I CR_Flag: KEYS GROUP $ Orig$ 0 CR-FLAG ! $ Dest$ 1 CR-FLAG ! HILITE# CR-FLAG @ 1 + END_GROUP EXIT_MENU_FKEY END_KEYS STATUS CR-FLAG @ 1 + PLACE_LABEL END_STATUS \I Cause_Value: KEYS $ Modify value$ GET_CAUSE_VALUE EXIT_MENU_FKEY END_KEYS STATUS CAUSE-VALUE @ W. END_STATUS END_MENU